<?php
class HotelServicesImplService extends SoapClient {
	/**
	 * Default class map for wsdl=>php
	 * @access private
	 * @var array
	 */
	private static $classmap = array(
		"BaseRequest" => "BaseRequest",
		"mapEntry" => "mapEntry",
		"HotelBaseRequest" => "HotelBaseRequest",
		"HotelRoomImageRequest" => "HotelRoomImageRequest",
		"BaseResponse" => "BaseResponse",
		"EanWsError" => "EanWsError",
		"ErrorAttributes" => "ErrorAttributes",
		"errorAttributesMap" => "errorAttributesMap",
		"entry" => "entry",
		"ServerInfo" => "ServerInfo",
		"HotelRoomImageResponse" => "HotelRoomImageResponse",
		"RoomImages" => "RoomImages",
		"RoomImage" => "RoomImage",
		"HotelListRequest" => "HotelListRequest",
		"RoomGroup" => "RoomGroup",
		"Room" => "Room",
		"HotelListResponse" => "HotelListResponse",
		"CachedSupplierResponse" => "CachedSupplierResponse",
		"HotelList" => "HotelList",
		"HotelSummary" => "HotelSummary",
		"RoomRateDetailsList" => "RoomRateDetailsList",
		"RoomRateDetails" => "RoomRateDetails",
		"HotelRateInfo" => "HotelRateInfo",
		"baseRateInfo" => "baseRateInfo",
		"baseRateInfoDiscounts" => "baseRateInfoDiscounts",
		"listWithSizeAttribute" => "listWithSizeAttribute",
		"Discount" => "Discount",
		"baseRateInfoNightlyRatesPerRoom" => "baseRateInfoNightlyRatesPerRoom",
		"NightlyRate" => "NightlyRate",
		"baseRateInfoSurcharges" => "baseRateInfoSurcharges",
		"Surcharge" => "Surcharge",
		"CancelPolicyInfoList" => "CancelPolicyInfoList",
		"CancelPolicyInfo" => "CancelPolicyInfo",
		"HotelFees" => "HotelFees",
		"HotelFee" => "HotelFee",
		"RateInfos" => "RateInfos",
		"ValueAdds" => "ValueAdds",
		"valueAdd" => "valueAdd",
		"LocationInfos" => "LocationInfos",
		"LocationInfo" => "LocationInfo",
		"HotelRoomCancellationRequest" => "HotelRoomCancellationRequest",
		"HotelRoomCancellationResponse" => "HotelRoomCancellationResponse",
		"HotelRoomAvailabilityRequest" => "HotelRoomAvailabilityRequest",
		"CouponData" => "CouponData",
		"HotelRoomAvailabilityResponse" => "HotelRoomAvailabilityResponse",
		"CouponInformationResponse" => "CouponInformationResponse",
		"CouponErrors" => "CouponErrors",
		"Error" => "Error",
		"HotelRoomResponse" => "HotelRoomResponse",
		"RoomType" => "RoomType",
		"RoomAmenities" => "RoomAmenities",
		"RoomAmenity" => "RoomAmenity",
		"HotelImages" => "HotelImages",
		"HotelImage" => "HotelImage",
		"BedTypes" => "BedTypes",
		"bedType" => "bedType",
		"HotelDetails" => "HotelDetails",
		"PropertyAmenities" => "PropertyAmenities",
		"PropertyAmenity" => "PropertyAmenity",
		"LocationInfoRequest" => "LocationInfoRequest",
		"LocationInfoResponse" => "LocationInfoResponse",
		"AlternatePropertyListRequest" => "AlternatePropertyListRequest",
		"AlternatePropertyListResponse" => "AlternatePropertyListResponse",
		"AlternateHotelResponse" => "AlternateHotelResponse",
		"HotelInfo" => "HotelInfo",
		"Amenities" => "Amenities",
		"LowestRateInfo" => "LowestRateInfo",
		"NightlyRates" => "NightlyRates",
		"HotelRoomReservationRequest" => "HotelRoomReservationRequest",
		"reservationInfo" => "reservationInfo",
		"addressInfo" => "addressInfo",
		"HotelRoomReservationResponse" => "HotelRoomReservationResponse",
		"HotelRateRulesRequest" => "HotelRateRulesRequest",
		"HotelRateRulesResponse" => "HotelRateRulesResponse",
		"RateChangeInfos" => "RateChangeInfos",
		"RateChangeInfo" => "RateChangeInfo",
		"RateRulesFreeFlows" => "RateRulesFreeFlows",
		"RateRulesFreeFlow" => "RateRulesFreeFlow",
		"HotelItineraryRequest" => "HotelItineraryRequest",
		"ItineraryQuery" => "ItineraryQuery",
		"HotelItineraryResponse" => "HotelItineraryResponse",
		"Itinerary" => "Itinerary",
		"Customer" => "Customer",
		"CustomerAddress" => "CustomerAddress",
		"HotelConfirmation" => "HotelConfirmation",
		"CouponInformation" => "CouponInformation",
		"ReservationGuest" => "ReservationGuest",
		"Hotel" => "Hotel",
		"ConfirmationExtras" => "ConfirmationExtras",
		"ConfirmationExtra" => "ConfirmationExtra",
		"HotelPaymentRequest" => "HotelPaymentRequest",
		"v3.HotelPaymentRequest" => "v3HotelPaymentRequest",
		"HotelPaymentResponse" => "HotelPaymentResponse",
		"PaymentType" => "PaymentType",
		"PingRequest" => "PingRequest",
		"PingResponse" => "PingResponse",
		"HotelInformationRequest" => "HotelInformationRequest",
		"HotelInformationResponse" => "HotelInformationResponse",
		"Suppliers" => "Suppliers",
		"Supplier" => "Supplier",
		"RoomTypes" => "RoomTypes",
		"LocaleType" => "LocaleType",
		"HotelMinorRevType" => "HotelMinorRevType",
		"errorHandling" => "errorHandling",
		"errorCategory" => "errorCategory",
		"errorAttribute" => "errorAttribute",
		"SearchRadiusUnitType" => "SearchRadiusUnitType",
		"SortType" => "SortType",
		"PropertyCategory" => "PropertyCategory",
		"SmokingPreference" => "SmokingPreference",
		"RatePlanType" => "RatePlanType",
		"hotelListOption" => "hotelListOption",
		"MultiRoomAvailType" => "MultiRoomAvailType",
		"SupplierCacheTolerance" => "SupplierCacheTolerance",
		"SupplierType" => "SupplierType",
		"DiscountType" => "DiscountType",
		"SurchargeType" => "SurchargeType",
		"hotelAvailOption" => "hotelAvailOption",
		"LocationInfoType" => "LocationInfoType",
		"MultiRoomResType" => "MultiRoomResType",
		"hotelInfoOption" => "hotelInfoOption",
		"getRoomImage" => "getRoomImage",
		"getRoomImageResponse" => "getRoomImageResponse",
		"getList" => "getList",
		"getListResponse" => "getListResponse",
		"getCancellation" => "getCancellation",
		"getCancellationResponse" => "getCancellationResponse",
		"getAvailability" => "getAvailability",
		"getAvailabilityResponse" => "getAvailabilityResponse",
		"getGeoLocation" => "getGeoLocation",
		"getGeoLocationResponse" => "getGeoLocationResponse",
		"getAlternateProperties" => "getAlternateProperties",
		"getAlternatePropertiesResponse" => "getAlternatePropertiesResponse",
		"getReservation" => "getReservation",
		"getReservationResponse" => "getReservationResponse",
		"getRateRules" => "getRateRules",
		"getRateRulesResponse" => "getRateRulesResponse",
		"getItinerary" => "getItinerary",
		"getItineraryResponse" => "getItineraryResponse",
		"getPaymentInfo" => "getPaymentInfo",
		"getPaymentInfoResponse" => "getPaymentInfoResponse",
		"getPing" => "getPing",
		"getPingResponse" => "getPingResponse",
		"getInformation" => "getInformation",
		"getInformationResponse" => "getInformationResponse",
	);

	/**
	 * Constructor using wsdl location and options array
	 * @param string $wsdl WSDL location for this service
	 * @param array $options Options for the SoapClient
	 */
	public function __construct($wsdl="http://api.ean.com/ean-services/ws/hotel/v3?wsdl&apiKey=fczart7vx5v7dhsm3exwpuf3", $options=array()) {
		foreach(self::$classmap as $wsdlClassName => $phpClassName) {
		    if(!isset($options['classmap'][$wsdlClassName])) {
		        $options['classmap'][$wsdlClassName] = $phpClassName;
		    }
		}
		parent::__construct($wsdl, $options);
	}

	/**
	 * Checks if an argument list matches against a valid argument type list
	 * @param array $arguments The argument list to check
	 * @param array $validParameters A list of valid argument types
	 * @return boolean true if arguments match against validParameters
	 * @throws Exception invalid function signature message
	 */
	public function _checkArguments($arguments, $validParameters) {
		$variables = "";
		foreach ($arguments as $arg) {
		    $type = gettype($arg);
		    if ($type == "object") {
		        $type = get_class($arg);
		    }
		    $variables .= "(".$type.")";
		}
		if (!in_array($variables, $validParameters)) {
		    throw new Exception("Invalid parameter types: ".str_replace(")(", ", ", $variables));
		}
		return true;
	}

	/**
	 * Service Call: getRoomImage
	 * Parameter options:
	 * (getRoomImage) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getRoomImageResponse
	 * @throws Exception invalid function signature message
	 */
	public function getRoomImage($mixed = null) {
		$validParameters = array(
			"(getRoomImage)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getRoomImage", $args);
	}


	/**
	 * Service Call: getList
	 * Parameter options:
	 * (getList) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getListResponse
	 * @throws Exception invalid function signature message
	 */
	public function getList($mixed = null) {
		$validParameters = array(
			"(getList)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getList", $args);
	}


	/**
	 * Service Call: getCancellation
	 * Parameter options:
	 * (getCancellation) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getCancellationResponse
	 * @throws Exception invalid function signature message
	 */
	public function getCancellation($mixed = null) {
		$validParameters = array(
			"(getCancellation)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getCancellation", $args);
	}


	/**
	 * Service Call: getAvailability
	 * Parameter options:
	 * (getAvailability) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getAvailabilityResponse
	 * @throws Exception invalid function signature message
	 */
	public function getAvailability($mixed = null) {
		$validParameters = array(
			"(getAvailability)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getAvailability", $args);
	}


	/**
	 * Service Call: getGeoLocation
	 * Parameter options:
	 * (getGeoLocation) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getGeoLocationResponse
	 * @throws Exception invalid function signature message
	 */
	public function getGeoLocation($mixed = null) {
		$validParameters = array(
			"(getGeoLocation)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getGeoLocation", $args);
	}


	/**
	 * Service Call: getAlternateProperties
	 * Parameter options:
	 * (getAlternateProperties) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getAlternatePropertiesResponse
	 * @throws Exception invalid function signature message
	 */
	public function getAlternateProperties($mixed = null) {
		$validParameters = array(
			"(getAlternateProperties)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getAlternateProperties", $args);
	}


	/**
	 * Service Call: getReservation
	 * Parameter options:
	 * (getReservation) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getReservationResponse
	 * @throws Exception invalid function signature message
	 */
	public function getReservation($mixed = null) {
		$validParameters = array(
			"(getReservation)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getReservation", $args);
	}


	/**
	 * Service Call: getRateRules
	 * Parameter options:
	 * (getRateRules) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getRateRulesResponse
	 * @throws Exception invalid function signature message
	 */
	public function getRateRules($mixed = null) {
		$validParameters = array(
			"(getRateRules)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getRateRules", $args);
	}


	/**
	 * Service Call: getItinerary
	 * Parameter options:
	 * (getItinerary) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getItineraryResponse
	 * @throws Exception invalid function signature message
	 */
	public function getItinerary($mixed = null) {
		$validParameters = array(
			"(getItinerary)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getItinerary", $args);
	}


	/**
	 * Service Call: getPaymentInfo
	 * Parameter options:
	 * (getPaymentInfo) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getPaymentInfoResponse
	 * @throws Exception invalid function signature message
	 */
	public function getPaymentInfo($mixed = null) {
		$validParameters = array(
			"(getPaymentInfo)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getPaymentInfo", $args);
	}


	/**
	 * Service Call: getPing
	 * Parameter options:
	 * (getPing) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getPingResponse
	 * @throws Exception invalid function signature message
	 */
	public function getPing($mixed = null) {
		$validParameters = array(
			"(getPing)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getPing", $args);
	}


	/**
	 * Service Call: getInformation
	 * Parameter options:
	 * (getInformation) parameters
	 * @param mixed,... See function description for parameter options
	 * @return getInformationResponse
	 * @throws Exception invalid function signature message
	 */
	public function getInformation($mixed = null) {
		$validParameters = array(
			"(getInformation)",
		);
		$args = func_get_args();
		$this->_checkArguments($args, $validParameters);
		return $this->__soapCall("getInformation", $args);
	}


}